/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fw.anotations;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

/**
 *
 * @author HP_Propietario
 */
public abstract class AbstractAnnotationInfo implements AnnotationInfo {

    private Map<String, AnotacionAtom> mapFieldAnnotationInfo;

    public AbstractAnnotationInfo() {
        mapFieldAnnotationInfo = new HashMap<String, AnotacionAtom>();

    }
    private String tipoAsociado;

    public String getTipoAsociado() {
        return tipoAsociado;
    }

    public void setTipoAsociado(String tipoAsociado) {
        this.tipoAsociado = tipoAsociado;
    }

    /***
     *  la idea es <tipoanotacion, <nombrecampo, valordela anotacion>>
     * @MBean, status, value
     */
    public Map getAnnotation() {

        return mapFieldAnnotationInfo;
    }

    /***
     * añadimos una annotacion.
     * se debe cargar primero el tipo de anotacion
     *
     *
     *
     * @param  typoAsociado: el nombre del interjaz annotado
     * @param  anotationAtom: clase que encpasula binding annotationAtom
     *
     */
    public void addAnnotationAtom(String typoAsociado, AnotacionAtom anotacionAtom) throws Exception {
        if (this.mapFieldAnnotationInfo != null) {
            mapFieldAnnotationInfo = new HashMap<String, AnotacionAtom>();
        }

        /*no se puede sobreescribir*/
        if (mapFieldAnnotationInfo.containsKey(getTipoAsociado())) {
            throw new Exception();
        }

        mapFieldAnnotationInfo.put(typoAsociado, anotacionAtom);
    }

    public void print() {
        System.out.println("--------------->");
        StringBuffer buffer = new StringBuffer();
        for (Map.Entry e : this.mapFieldAnnotationInfo.entrySet()) {
            buffer.append("key\n"+e.getKey());
            String ca=(String)e.getKey();
            buffer.append("value\n"+ca);
        }


        buffer.toString();
        System.out.println("" + buffer.toString());

        System.out.println("--------------->");

    }
}
